package com.miyu.system.controller.crawler;

import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.miyu.system.service.crawler.BookService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 书籍控制器
 *
 * @author longm
 * @date 2024/11/20
 */
@RestController
@RequestMapping("book")
@RequiredArgsConstructor
public class BookController {

    private final BookService bookService;

    /**
     * 书搜索
     *
     * @param jsonObject JSON 对象
     * @return {@link JSONArray }
     */
    @RequestMapping("bookSearch")
    public JSONArray bookSearch(@RequestBody JSONObject jsonObject) {
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(jsonObject);
        return bookService.bookSearch(jsonObject);
    }

    /**
     * 书籍详情
     *
     * @param jsonObject JSON 对象
     * @return {@link JSONObject }
     */
    @RequestMapping("bookDetail")
    public JSONObject bookDetail (@RequestBody JSONObject jsonObject) {
        jsonObject.put("title", jsonObject.getString("title"));
        jsonObject.put("author", jsonObject.getString("author"));
        return bookService.bookDetail(jsonObject);
    }

    /**
     * 书籍章节
     *
     * @param jsonObject JSON 对象
     * @return {@link JSONArray }
     */
    @RequestMapping("bookChapter")
    public JSONArray bookChapter(@RequestBody JSONObject jsonObject) {
        return bookService.bookChapter(jsonObject);

    }

    /**
     * 书籍内容
     *
     * @param jsonObject JSON 对象
     * @return {@link JSONObject }
     */
    @RequestMapping("bookContent")
    public JSONObject bookContent(@RequestBody JSONObject jsonObject) {

        return bookService.bookContent(jsonObject);
    }

    /**
     * 实例化 收集书
     * @param params 本页面
     * @return {@link JSONObject}
     */
    @RequestMapping("collectBook")
    public JSONObject collectBook(@RequestBody JSONObject params) {
        return bookService.collectBook(params);
    }

    /**
     * 保存书籍
     * 收集后数据 手动执行保存数据
     * @param params 参数
     * @return {@link JSONObject }
     */
    @RequestMapping("saveBook")
    public JSONObject saveBook(@RequestBody JSONObject params) {
        return bookService.saveBook(params);
    }

    /**
     * 书籍下载
     *  3种下载 单章节下载 ；单章节合并 下载；链接下载
     * @param params 参数
     * @return {@link JSONObject }
     */
    @RequestMapping("bookDownLoad")
    public JSONObject bookDownLoad(@RequestBody JSONObject params) {
        return bookService.bookDownLoad(params);
    }

    /**
     * 获取参数 执行操作
     *
     * @param params 参数
     * @return {@link JSONObject }
     */
    @RequestMapping("execSpider")
    public JSONObject execSpider(@RequestBody JSONObject params) {
       return bookService.execSpider(params);
    }
}
